专利摘要:
揭示用於具非揮發性記憶體(「NVM」)之系統之有效緩衝的系統及方法。在一些實施例中,一系統之一控制電路可使用試探以判定是否執行自一檔案系統接收之一或多個寫入命令之緩衝。在其他實施例中,該控制電路可藉由沿著一緩衝區之頁面對準界限有效地重新排序一佇列中之寫入命令來最小化讀取能量及緩衝額外負擔。在其他實施例中,該控制電路可最佳地組合來自一緩衝區之寫入命令與來自一佇列之寫入命令。在組合該等命令後,該控制電路可在單個異動中分派該等命令。
公开号:TW201306034A
申请号:TW101134054
申请日:2012-02-24
公开日:2013-02-01
发明作者:Daniel J Post;Nir Wakrat
申请人:Apple Inc;
IPC主号:G06F3-00
专利说明:
用於具非揮發性記憶體之系統之有效緩衝
「反及」(NAND)快閃記憶體以及其他類型之非揮發性記憶體(「NVM」)常用於大容量儲存器。舉例而言,諸如攜帶型媒體播放器之消費型電子器件常包括快閃記憶體以儲存音樂、視訊及其他媒體。
因為一器件之檔案系統可執行多個小的同步輸入/輸出(「I/O」),所以在一些狀況下,無法達成晶粒平行處理原則(parallelism)。因此,此情形可降低系統頻寬且增加用於對一NVM之頁面進行程式化之延時。
在一些情形下,可藉由在將一或多個I/O程式化至一NVM之前緩衝該等I/O來改良用於對該NVM進行程式化之延時。然而,在其他情形下,若I/O可改為直接程式化至該NVM,則自一檔案系統接收之全部I/O之不加區分的緩衝可實際上減慢程式化處理程序。
揭示用於具非揮發性記憶體(「NVM」)之系統之有效緩衝的系統及方法。該系統可在緩衝將提高系統效能之情況下選擇緩衝寫入,且在緩衝將為淨效能負擔之情況下選擇將寫入直接程式化至NVM。在一些實施例中,一系統可使用試探以判定是否執行自一檔案系統接收之一或多個寫入命令之緩衝。在其他實施例中,該系統可藉由沿著一緩衝區之頁面對準界限有效地重新排序一佇列中之寫入命令來最小化讀取能量及緩衝額外負擔。在其他實施例中,該系統可最佳地組合來自一緩衝區之寫入命令與來自一佇列之寫入命令。在組合該等命令後,該系統可在單個異動中分派該等命令。
結合隨附圖式,考慮到下文[實施方式],本發明之上述及其他態樣及優勢將變得更顯而易見,其中,相同元件符號遍及諸圖表示相同部分。
提供用於具非揮發性記憶體(「NVM」)之系統之有效緩衝的系統及方法。一系統之控制電路可使用試探以判定是否緩衝自一檔案系統接收之寫入命令。可使用任何合適試探,諸如,一寫入命令之大小、緊接在該寫入命令之前的所分派之寫入命令之數目、一佇列中所保存之剩餘寫入命令之數目、記憶體中之可用空間的量、一緩衝區之大小及輸入/輸出(「I/O」)樣式。
在一些實施例中,該控制電路可基於命令之大小來判定是否緩衝一寫入命令。舉例而言,若該控制電路判定該寫入命令為相對小之命令(例如,該寫入命令之大小小於一預定臨限值),則該控制電路可針對該寫入命令而選擇一經緩衝之路徑(例如,將該寫入命令傳送至記憶體中之緩衝區)。若該控制電路改為判定該寫入命令為相對大之命令(例如,該寫入命令之大小超過一預定臨限值),則該控制電路可針對該寫入命令而選擇一寫入路徑(例如,引導一匯流排控制器將該寫入命令分派至一NVM)。
在一些實施例中,代替自動地針對小的寫入命令而選擇一經緩衝之路徑,該控制電路可使用額外試探來判定一佇列中所保存之寫入命令是否可直接在該佇列中組合為一寫入多命令。一旦該等命令已組合為該寫入多命令,該控制電路便可經由一寫入路徑將該寫入多命令直接自該佇列分派至一NVM。
在其他實施例中,為了最大化並行處理(concurrency),該控制電路可試圖沿著一緩衝區之頁面對準界限重新排序一佇列中之寫入命令。因此,在後續讀取時,可最小化讀取能量,此係因為通常按照與程式化使用者資料之對準及細微性相同的對準及細微性來讀取該使用者資料。在其他實施例中,一控制電路可將經緩衝之寫入命令及佇列寫入命令組合為同一批次或異動以改良系統效率。
圖1說明電子器件100之方塊圖。在一些實施例中,電子器件100可為以下各者或可包括以下各者:攜帶型媒體播放器、蜂巢式電話、口袋型個人電腦、個人數位助理(「PDA」)、桌上型電腦、膝上型電腦及任何其他合適類型之電子器件。
電子器件100可包括系統單晶片(「SoC」)110及非揮發性記憶體(「NVM」)120。非揮發性記憶體120可包括基於浮動閘極或電荷捕獲技術之「反及」快閃記憶體、「反或」快閃記憶體、可抹除可程式化唯讀記憶體(「EPROM」)、電可抹除可程式化唯讀記憶體(「EEPROM」)、鐵電RAM(「FRAM」)、磁阻RAM(「MRAM」)或其任何組合。
NVM 120可組織成「區塊」(其可為最小可抹除單位)且進一步組織成「頁面」(其可為可程式化或讀取之最小單位)。在一些實施例中,NVM 120可包括多個積體電路,其中每一積體電路可具有多個區塊。來自對應積體電路之記憶體位置(例如,區塊或區塊之頁面)可形成「超區塊」。可使用實體位址(例如,實體頁面位址或實體區塊位址)來引用NVM 120之每一記憶體位置(例如,頁面或區塊)。
系統單晶片110可包括SoC控制電路112、記憶體114、加密模組116及NVM介面118。SoC控制電路112可控制SoC 110及SoC 110或器件100之其他組件的一般操作及功能。舉例而言,回應於使用者輸入及/或應用程式或作業系統之指令,SoC控制電路112可將讀取或寫入命令發佈至NVM介面118以自NVM 120獲得資料或將資料儲存於NVM 120中。為清楚起見,SoC控制電路112可請求儲存或擷取之資料可稱為「使用者資料」,但該資料可能並不直接與使用者或使用者應用程式相關聯。實情為,該使用者資料可為由SoC控制電路112產生或獲得(例如,經由應用程式或作業系統)之數位資訊的任何合適序列。
SoC控制電路112可包括操作以驅動電子器件100之功能性之硬體、軟體及韌體以及任何組件、電路或邏輯之任何組合。舉例而言,SoC控制電路112可包括一或多個處理器,該一或多個處理器在NVM 120或記憶體114中所儲存之軟體/韌體之控制下操作。
SoC控制電路112可將一或多個命令分派至NVM 120。在一些實施例中,SoC控制電路112可包括一區塊器件驅動程式或包裝函式,該區塊器件驅動程式或包裝函式可經組態以將應用程式設計介面(「API」)操作分派至NVM 120或NVM 120之控制器。在一些實施例中,SoC控制電路112可修改該區塊器件驅動程式或包裝函式之一或多個參數以便將資訊傳送至NVM 120。舉例而言,藉由修改該一或多個參數,SoC控制電路112可傳送與用於存取NVM 120之命令(例如,讀取、程式化、抹除及/或寫入多命令)相關聯之資訊。
記憶體114可包括任何合適類型之揮發性記憶體,諸如,隨機存取記憶體(「RAM」)(例如,靜態RAM(「SRAM」)、動態隨機存取記憶體(「DRAM」)、同步動態隨機存取記憶體(「SDRAM」)、雙倍資料速率(「DDR」)RAM)、快取記憶體、唯讀記憶體(「ROM」)或其任何組合。記憶體114可包括可臨時儲存用於程式化至非揮發性記憶體120中或自非揮發性記憶體120讀取之使用者資料的資料源。在一些實施例中,記憶體114可充當實施為SoC控制電路112之一部分之任何處理器的主記憶體。
在一些實施例中,記憶體114可包括一或多個命令佇列(圖1未示),該一或多個命令佇列用於保存尚未分派至NVM 120的自一檔案系統接收之命令(例如,讀取、寫入及/或修剪命令)。該一或多個命令佇列可為區塊-器件級佇列。舉例而言,記憶體114可包括用於保留讀取命令之讀取佇列、用於保留寫入命令之寫入佇列及用於保留修剪命令之修剪佇列。因此,SoC控制電路112可掃描一或多個佇列以便選擇可分派至NVM 120之一或多個命令。在已分派一或多個命令後,SoC控制電路112可自該佇列移除此等命令。熟習此項技術者應瞭解,記憶體114可改為包括經組態以保留全部類型之命令(例如,讀取、寫入及修剪命令)之一個佇列。
該一或多個佇列將大體上得以服務直至該等佇列空白為止。在一些實施例中,SoC控制電路112可具有用於服務該等獨立佇列中之每一者的一組公平規則。舉例而言,SoC控制電路112可試圖服務該等佇列,以使得該等佇列中之每一者係按照大致與當前包括於該佇列中之命令的數目相同的速率來服務。服務該等佇列之次序影響系統之服務品質。
在一些實施例中,因為命令可能並不能夠無限期地保存於該等佇列中(例如,其他執行緒或處理程序可等待完成此等I/O),所以記憶體114可包括一緩衝區(圖1未示),該緩衝區可提供命令之長期儲存。舉例而言,在一些狀況下,SoC控制電路112可選擇一佇列中所保存之一或多個寫入命令,且將該等選定之寫入命令傳送至該緩衝區。在將該等寫入命令保存至該緩衝區後,SoC控制電路112可自該佇列移除此等寫入命令。
熟習此項技術者應瞭解,記憶體114中之緩衝區可具有任何合適大小。舉例而言,該緩衝區可為能夠儲存少於一個頁面的資料之相對小的緩衝區。然而,若最小程式化細微性為一個頁面或更大,則該緩衝區可為能夠儲存一或多個資料頁面的相對大的緩衝區。舉例而言,該緩衝區的大小可為一個頁面、一個等量區、多個等量區、超區塊或任何其他合適大小。
加密模組116可為或可包括經組態以基於合適加密器執行加密及解密的任何硬體或軟體、或其組合。舉例而言,加密模組116可基於進階加密標準(「AES」)、資料加密標準(「DES」)或RSA。加密模組116可為儲存於NVM 120上或傳輸至SoC 110/自SoC 110接收之敏感資料(諸如,個人資訊或帳單資訊)提供安全性。雖然加密模組116在圖1中展示為包括於SoC 110中,但熟習此項技術者應瞭解,加密模組116可改為實施於NVM 120中。
在一些實施例中,加密模組116可使用由控制電路(例如,SoC控制電路112或NVM 120上之控制器)提供之一或多個「加密種子」來加密及解密資料,該一或多個「加密種子」可為加密演算法所需以執行加密或解密。在一些實施例中,且尤其對於基於AES之加密模組而言,該等加密種子可包括一密鑰及一初始化向量(「IV」)。為了自經加密之資料恢復原始未經加密之資料,用於解密之加密種子可需要與最初用於加密之種子相同。
NVM介面118可包括經組態以充當SoC控制電路112與NVM 120之間的介面或驅動程式之硬體、軟體及/或韌體之任何合適組合。對於NVM介面118中所包括之任何軟體模組而言,對應程式碼可儲存於NVM 120或記憶體114中。
NVM介面118可執行各種功能,該等功能允許SoC控制電路112存取NVM 120且管理NVM 120之記憶體位置(例如,頁面、區塊、超區塊、積體電路)及其中所儲存之資料(例如,使用者資料)。舉例而言,NVM介面118可解譯來自SoC控制電路112之讀取或寫入請求,執行耗損平均且產生與NVM 120之匯流排協定相容之讀取及程式化指令。
雖然將NVM介面118及SoC控制電路112展示為獨立模組,但此僅意欲簡化本發明之實施例之描述。應理解,此等模組可共用硬體組件、軟體組件或兩者。舉例而言,SoC控制電路112可執行NVM介面118之基於軟體之記憶體驅動程式。
在一些實施例中,電子器件100可包括一目標器件(諸如,快閃記憶體磁碟或安全數位(「SD」)卡),該目標器件包括NVM 120或NVM介面118之一些或全部部分(例如,下文論述之轉譯層)。在此等實施例中,SoC 110或SoC控制電路112可充當該目標器件之主機控制器。舉例而言,作為該主機控制器,SoC 110可將讀取及寫入請求發佈至該目標器件。
圖2說明電子器件200之方塊圖,其可更詳細地說明根據各種實施例之電子器件100(圖1)之韌體、軟體及/或硬體組件中之一些。電子器件200可具有上文關於圖1所描述之特徵及功能性中之任一者,且電子器件100可具有關於圖2所描述之特徵及功能性中之任一者。如圖所示,虛線給層定界線。應理解,哪些組件落入分界線內的描繪僅為說明性的且一或多個組件可與不同層有關。
電子器件200可包括檔案系統210、NVM驅動程式212、NVM匯流排控制器216及NVM 220。在一些實施例中,檔案系統210及NVM驅動程式212可為軟體或韌體模組,且NVM匯流排控制器216及NVM 220可為硬體模組。因此,在此等實施例中,NVM驅動程式212可表示NVM介面218之軟體或韌體態樣,且NVM匯流排控制器216可表示NVM介面218之硬體態樣。
檔案系統210可包括諸如檔案配置表(「FAT」)檔案系統或階層式檔案系統增強版(「HFS+」)的任何合適類型之檔案系統,且可為電子器件200之作業系統之一部分(例如,圖1之SoC控制電路112之一部分)。在一些實施例中,檔案系統210可包括快閃檔案系統,其可提供頁面之邏輯至實體映射。在此等實施例中,檔案系統210可執行下文論述之NVM驅動程式212之功能性中的一些或全部,且因此檔案系統210及NVM驅動程式212可為獨立模組或可並非為獨立模組。
檔案系統210可管理應用程式及作業系統之檔案及資料夾結構。檔案系統210可在電子器件200上執行之應用程式或作業系統之控制下操作,且可在該應用程式或作業系統請求自NVM 220讀取資訊或將資訊儲存於NVM 220中時將寫入及讀取命令提供給NVM驅動程式212。連同每一讀取或寫入命令,檔案系統210可提供指示應自何處讀取使用者資料或將使用者資料寫入至何處的邏輯位址,諸如邏輯頁面位址或具有頁面位移之邏輯區塊位址(「LBA」)。
檔案系統210可將讀取及寫入請求提供給未直接與NVM 220相容之NVM驅動程式212。舉例而言,邏輯位址可使用基於硬碟機之系統特有的慣例或協定。不同於快閃記憶體,基於硬碟機之系統可複寫記憶體位置而不首先執行區塊抹除。此外,硬碟機可能並不需要耗損平均來增加該器件之使用壽命。因此,NVM介面218可執行記憶體特定、廠商特定或記憶體特定且廠商特定之任何功能以處置檔案系統請求且按照適用於NVM 220之方式執行其他管理功能。
NVM驅動程式212可包括轉譯層214。在一些實施例中,轉譯層214可為或可包括快閃轉譯層(「FTL」)。對於寫入命令,轉譯層214可將所提供之邏輯位址映射至NVM 220上之空閒的經抹除之實體位置。對於讀取命令,轉譯層214可使用所提供之邏輯位址以判定儲存所請求之資料的實體位址。因為每一NVM可取決於NVM之大小或廠商而具有不同佈局,所以此映射操作可為記憶體特定及/或廠商特定的。除執行邏輯至實體位址映射外,轉譯層214亦可執行任何其他合適功能。舉例而言,轉譯層214可執行快閃轉譯層可特有之其他功能中之任一者,諸如,廢棄項目收集及耗損平均。
NVM驅動程式212可與NVM匯流排控制器216介接以完成NVM存取命令(例如,程式化、讀取及抹除命令)。匯流排控制器216可充當至NVM 220之硬體介面,且可使用NVM 220之匯流排協定、資料速率及其他規格與NVM 220通信。
在一些實施例中,在自檔案系統210接收到命令(例如,寫入命令)後,NVM介面218可引導NVM匯流排控制器216將命令(例如,API操作)分派至NVM 220。在一些實施例中,NVM介面218可使用轉譯層214以獲得NVM 220之一或多個記憶體位置之實體位址。
NVM介面218可基於記憶體管理資料(本文中有時稱為「後設資料」)來管理NVM 220。該後設資料可由NVM驅動程式212產生或可由在NVM驅動程式212之控制下操作的模組產生。舉例而言,後設資料可包括用於管理邏輯與實體位址之間的映射的任何資訊、損壞區塊管理、耗損平均、用於偵測或校正資料錯誤的錯誤校正碼(「ECC」)資料,或其任何組合。該後設資料可包括由檔案系統210提供之資料以及使用者資料,諸如,邏輯位址。因此,大體而言,「後設資料」可指關於或有關使用者資料或大體上用於管理非揮發性記憶體之操作及記憶體位置之任何資訊。
NVM介面218可經組態以將後設資料儲存於NVM 220中。在一些實施例中,NVM介面218可在與儲存使用者資料相同的記憶體位置(例如,頁面)處儲存與該使用者資料相關聯之後設資料。舉例而言,NVM介面218可在NVM 220之一或多個記憶體位置處儲存使用者資料、該使用者資料之相關聯之邏輯位址及ECC資料。NVM介面218亦可將關於該使用者資料之其他類型之後設資料儲存於相同記憶體位置中。
NVM介面218可儲存邏輯位址,以使得在NVM 220通電時或在NVM 220操作期間,電子器件200可判定何資料留存於此位置處。特定言之,因為檔案系統210可根據使用者資料之邏輯位址而非使用者資料之實體位址來引用使用者資料,所以NVM介面218可將該使用者資料及邏輯位址儲存在一起以維持其關聯性。因此,舉例而言,即使維持NVM 220中之實體至邏輯映射之獨立表變得過期,NVM介面218可仍在電子器件200通電或重新開機時判定適當映射。
如上文所論述,NVM(例如,圖1之NVM 120或圖2之NVM 220)可組織成晶粒、區塊、頁面、超區塊及其類似者。舉例而言,圖3展示NVM 300之示意性佈局。NVM 300可相同於或類似於NVM 120(圖1)或NVM 220(圖2)。圖3僅欲說明NVM 300之組織佈局且並不指示非揮發性記憶體之實際實體佈局。舉例而言,雖然在圖3中將晶粒0說明為靠近晶粒1,但此僅用於說明此等晶粒之功能性關係,且在NVM 300之實際實體佈局中,此等晶粒可能彼此靠近而定位或可能並未彼此靠近而定位。
此外,雖然在圖3中展示特定數目之晶粒、區塊及頁面,但此僅出於說明之目的,且熟習此項技術者可瞭解,NVM 300可包括任何合適數目之晶粒、區塊及頁面。作為一個說明,NVM 300之每一晶粒可包括4096個區塊,每一區塊可基於該區塊為SLC區塊、2位元MLC區塊或是3位元MLC區塊而包括64個、128個或192個頁面。此外,NVM 300之每一頁面可具有任何合適大小,諸如,2 KiB、4 KiB、8 KiB或16 KiB。
如圖3所說明,NVM 300可包括一或多個晶粒(亦即,積體電路),諸如,晶粒0、晶粒1、晶粒2及晶粒3。NVM 300之每一晶粒可組織為一或多個「區塊」。舉例而言,晶粒0至3說明為各自組織為區塊0至3。
該等晶粒之每一區塊可組織為一或多個頁面。舉例而言,晶粒0至3中之每一者之區塊0說明為組織為頁面0至3。NVM 300之每一頁面可包括任何合適資訊。舉例而言,該等頁面可包括使用者資料、後設資料或兩者。在一些實施例中,諸如ECC資料之後設資料可包括於該等頁面中以提供NVM 300中所儲存之資訊的錯誤偵測及/或校正。
隨著時間流逝,頁面大小增加以便補償對一NVM進行程式化所花費之較長時間。亦即,因為NVM之記憶體胞之大小減小,所以較多精確脈衝必須施加至NVM之記憶體胞以便將資料程式化於此等記憶體胞中。因此,藉由增大頁面之大小,可在任何特定時間段期間程式化相同量之使用者資料。此舉之淨效應為電子器件之使用者將不會經歷NVM之總體程式化速度之降低。
NVM 300亦可包括一或多個超區塊,該一或多個超區塊包括來自每一晶粒之在晶粒中具有相同位置或「區塊號碼」之一個區塊。舉例而言,NVM 300之超區塊0可包括晶粒0至3中之每一者之區塊0。類似地,NVM 300之超區塊1可包括晶粒0至3中之每一者之區塊1,NVM 300之超區塊2可包括晶粒0至3中之每一者之區塊2,等等。
可藉由將一或多個區塊虛擬連結或「等量化」在一起而形成超區塊。區塊並不需要位於每一晶粒的相同列中而虛擬連結為超區塊。實際上,可自兩個或兩個以上晶粒隨機選擇區塊以形成超區塊。在一些實施例中,超區塊可包括僅一個區塊。超區塊提供操作平行處理原則,藉此使得能夠平行地對位於不同晶粒中之區塊執行程式化、讀取及抹除操作。
此外,來自兩個或兩個以上晶粒之頁面可虛擬連結在一起以形成超頁面或「等量區」。舉例而言,等量區302可包括來自晶粒0至3中之每一者之區塊0的頁面0。類似地,等量區304可包括來自晶粒0至3中之每一者之區塊0的頁面3。實施於一NVM介面中之轉譯層(例如,圖2之轉譯層214)可追蹤超區塊或等量區。大體上,對於包括於特定等量區(例如,等量區302或304)中之頁面而言,程式化時間可保持相同。
一系統之檔案系統(例如,圖2之檔案系統210)可在邏輯空間中操作。因此,如上文所論述,該系統中之每一檔案可映射至一或多個LBA。相應地,該一或多個LBA可映射至該NVM中之一或多個實體頁面位址。
然而,當一NVM經組態以具有能夠儲存多個LBA之較大頁面時,該檔案系統可有時發佈可能並不完全填滿一NVM中之實體頁面的寫入命令。在習知系統中,一控制電路(例如,圖1之控制電路112)可用無效資料來填補一頁面之未填充部分,且將該寫入命令與該無效資料程式化至該NVM。此操作浪費該NVM中之空間,且可因此增加需要對該NVM執行之GC的量。
因此,為了提高系統效率,一系統可經組態以在單個異動中將多個寫入命令分派至一NVM。
圖4展示各種系統之說明性時序圖。舉例而言,如圖4中所展示,若正在單個操作中(例如,作為寫入多命令)程式化一個頁面(如時序圖400中所展示)或多個頁面(如時序圖402中所展示),則程式化時間(t_prog)並不實質上不同。在該多個頁面包括於單個等量區中之情況下,尤為如此。
此外,若正在單個操作中程式化一個頁面或多個頁面,則起動程式化之時間(t_startup)亦不實質上變化。如本文中所使用,「起動程式化之時間」指啟動NVM介面(例如,圖2之NVM介面218)所花費之時間。
此外,在大多數情形下,將內容傳送至頁面緩衝區所花費之時間(t_transfer)與t_prog相比相對短。舉例而言,如時序圖402中所展示,用於程式化寫入多命令之t_transfer可仍為與t_prog相比而較短的持續時間。然而,如時序圖404中所展示,歸因於多個t_prog之組合,獨立地程式化多個頁面較不有效。若每次可程式化之使用者資料的量相對小,則該系統之效率尤其受影響。
因此,為了增加可平行執行之晶粒程式化之量及可在特定I/O異動中程式化之使用者資料的量,一控制電路可將多個寫入命令組合為單個寫入多命令。熟習此項技術者應瞭解,可使用任何合適做法來形成寫入多命令。舉例而言,該控制電路可藉由將與該多個命令相關聯之一組邏輯位址、一組計數器及一組緩衝區分別組合為一陣列之邏輯位址、一陣列之計數器及一陣列之緩衝區而形成寫入多命令。
在形成該寫入多命令後,該控制電路可將該寫入多命令分派至一NVM(例如,按照一API操作之形式)。藉由形成並分派寫入多命令,可將使用者資料較有效地程式化於該NVM中,而不浪費有價值之空間。
在一些實施例中,該系統可具有用於將資料寫入分割至多個寫入路徑中之若干選項。圖5展示系統之說明性程式化流程500之圖形視圖。
如所論述,一檔案系統(例如,圖2之檔案系統210)可發佈可在系統中之一或多個佇列中保存的一或多個命令(例如,讀取、寫入及/或修剪命令)。舉例而言,如圖5中所展示,佇列502可表示可經組態以保留一或多個寫入命令之寫入佇列。然而,熟習此項技術者應瞭解,該系統可包括用於儲存讀取及/或修剪命令之額外佇列。或者,佇列502可經組態以儲存寫入、讀取及修剪命令。
在一些實施例中,在佇列502中接收到一寫入命令後,一控制電路(例如,圖1之控制電路112)可選擇兩個路徑中之一者來分派該寫入命令。舉例而言,該控制電路可選擇一寫入路徑(例如,路徑504)來將該寫入命令分派至NVM 510。NVM 510可相同於或類似於NVM 120(圖1)、NVM 220(圖2)或NVM 300(圖3)。
在一些狀況下,藉由選擇路徑504,可直接將該寫入命令分派至硬體引擎506。舉例而言,硬體引擎504可為直接記憶體存取(「DMA」)引擎。
在一些實施例中,在將該寫入命令分派至硬體引擎506之前,該控制電路可使用加密模組(例如,圖1之加密模組116)來加密該寫入命令。如所論述,該加密模組可使用任何合適加密標準(諸如,AES、DES或RSA)來加密該寫入命令。
隨後,該控制電路可將該寫入命令傳遞至NVM介面508。NVM介面508可相同於或實質上類似於圖8之NVM介面218。一旦NVM介面508接收該寫入命令,便可引導一NVM匯流排控制器(例如,圖2之NVM匯流排控制器216)跨越匯流排512將該寫入命令分派至NVM 510。
在一些狀況下,代替選擇路徑520,該控制電路可針對一特定寫入命令而選擇一經緩衝之路徑(例如,路徑520)。藉由選擇路徑520,該控制電路可將該寫入命令自佇列502傳送至緩衝區522。如上文所論述,緩衝區522可儲存於揮發性記憶體(例如,圖1之記憶體114)中,且可經組態以儲存任何合適數目之寫入命令。
藉由將一或多個寫入命令儲存於緩衝區522中,該控制電路可在引導一匯流排控制器經由路徑524將多個命令同時分派至NVM 510之前等待自該檔案系統接收額外寫入命令。舉例而言,該多個命令可組合為一寫入多命令,該寫入多命令可接著分派至NVM 510。
在一些實施例中,在將該寫入命令傳送至緩衝區522之前,該控制電路可引導一加密模組加密該寫入命令。在加密該寫入命令後,該控制電路可將該經加密之寫入命令儲存於緩衝區522中。
在其他實施例中,該控制電路可將未經加密之寫入命令傳送至緩衝區522。然而,在此等實施例中,該控制電路可需要將一或多個加密種子(例如,一或多個密鑰及IV)複製至揮發性記憶體(例如,圖1之記憶體114)。接著,在準備自緩衝區522分派該寫入命令時,該控制電路可引導一加密模組使用該等所儲存之加密種子來加密該寫入命令。因此,對於此一組態而言,緩衝區522可與獨特加密特性(例如,一組固定加密種子)相關聯。
為了保留系統一致性,可由一系統之應用程式、作業系統或檔案系統發佈一或多個「旁頻帶信號」。如本文中所使用,「旁頻帶信號」可指可由應用程式、作業系統或檔案系統之快取演算法產生以維持一致性的任何合適信號。舉例而言,一種類型之旁頻帶信號可為經同步之快取信號,其可由該系統中之一或多個應用程式產生。另一旁頻帶信號可為強制單元存取(「FUA」)信號,其可由HFS+產生。
回應於接收到此等旁頻帶信號中之一或多者,該控制電路可引導一匯流排控制器清空該緩衝區。亦即,該控制電路可引導該匯流排控制器經由路徑524將當前儲存於該緩衝區中之所有命令分派至該NVM。
因為路徑520涉及將一寫入命令自佇列502複製至緩衝區522之額外步驟,所以可在該系統中產生額外訊務。結果,在一些情形下,與路徑504相比,路徑520可較不有效。舉例而言,若該所傳送之命令為大命令,則經由路徑504將該命令直接程式化至NVM 510可較有效。
另一方面,若該控制電路不加區分地選擇路徑504來分派所有命令(包括小命令),則系統效能亦可降低。因此,該控制電路可需要應用一或多個試探以選擇最適用於分派特定寫入命令之路徑。
可使用之試探中之一者為一寫入命令之大小。至少部分地基於寫入命令之大小,該控制電路可判定是否緩衝一寫入命令。
舉例而言,該控制電路可首先判定保存於佇列502中之一寫入命令之大小。該控制電路可接著判定該寫入命令之大小是否小於一預定臨限值。回應於判定該寫入命令之大小小於該預定臨限值(例如,該寫入命令為相對小之寫入命令),該控制電路可判定執行該寫入命令之緩衝。
因此,該控制電路可經由路徑520將該寫入命令自佇列502傳送至緩衝區522。一旦該寫入命令已儲存於緩衝區522中,該命令稍後便可與其他寫入命令組合。
若該控制電路改為判定該寫入命令之大小大於該預定臨限值(例如,該寫入命令為相對大之寫入命令),則該控制電路可判定並不執行該寫入命令之緩衝。結果,該控制電路可引導一匯流排控制器經由路徑504將該寫入命令自佇列502分派至NVM 510。
因此,自總體系統觀點而言,藉由基於一寫入命令之大小來選擇一路徑,該控制電路可降低用於執行寫入命令的總所需頻寬。
在其他實施例中,除使用一寫入命令之大小外,該控制電路亦可使用其他試探來判定選擇路徑504或路徑520中之哪一者。舉例而言,該控制電路可使用一或多個試探以判定是否可藉由在佇列502中將多個寫入命令直接組合為一寫入多命令來改良系統效率。特定言之,一旦該等寫入命令已組合為該寫入多命令,便可經由路徑504自佇列502直接分派該寫入多命令。
可使用之試探中之一者為佇列502中所保存之寫入命令之數目。舉例而言,該控制電路可判定佇列502中所保存之寫入命令之數目是否超過一預定數目。回應於判定寫入命令之數目超過該預定數目,該控制電路可將該等寫入命令組合為一寫入多命令,且可引導一匯流排控制器將該寫入多命令自佇列502分派至NVM 510。因此,該控制電路可獲得同時分派多個寫入命令之益處,而亦避免將寫入命令複製至緩衝區522之額外步驟。
可使用之另一試探為I/O樣式。舉例而言,該控制電路可假設I/O大體上按照批次到達。舉例而言,在特定時間段期間,該控制電路可較可能接收讀取命令或寫入命令之叢發,而不是穿插以讀取命令之寫入命令。因此,若該控制電路已接收到一系列循序寫入,則該控制電路可預期在將來接收額外循序寫入。
在此一假設下,該控制電路可判定佇列502中之一組最近接收之寫入命令是否為循序的。回應於判定該組最近接收之寫入命令為循序的,該控制電路可等待在佇列502中接收額外寫入命令。
一旦該控制電路接收此等額外寫入命令,該控制電路便可將該等額外寫入命令與該組最近接收之命令組合為一寫入多命令。該控制電路可接著引導一匯流排控制器將該寫入多命令自佇列502分派至NVM 510。因此,針對循序寫入命令,該控制電路可繞過緩衝區522。
在一些實施例中,在該控制電路正等待在佇列502中接收額外寫入命令時,該控制電路可改為服務記憶體中所儲存之讀取佇列及/或修剪佇列。因此,該控制電路可忽視現有公平規則,且允許在佇列502中堆疊寫入命令。
作為另一實例,該控制電路可基於緊接在寫入命令之前的所分派之寫入命令之數目及/或自最後所分派之寫入命令起逝去之時間的量來判定是否緩衝小的寫入命令。亦即,基於過去之存取樣式之觀察,該控制電路可判定額外寫入命令可能在將來到達。因此,將小的寫入命令保持於佇列502中且等待額外寫入命令可較有效。
舉例而言,若該控制電路判定緊接在該寫入命令之前的所分派之寫入命令之數目超過一預定數目,則該控制電路可等待在佇列502中接收一或多個額外寫入命令。類似地,若自最後所分派之寫入命令起逝去之時間的量小於一預定時間段(例如,幾毫秒),則該控制電路可等待接收額外寫入命令。
一旦該控制電路在佇列502中接收一或多個額外寫入命令,該控制電路便可將該等額外寫入命令與該小的寫入命令組合為一寫入多命令。該控制電路可接著引導一匯流排控制器將該寫入多命令自佇列502分派至NVM 510。
在上文論述之實例中,熟習此項技術者應瞭解,該控制電路可在一時間段(例如,幾毫秒)已逝去後將一或多個寫入命令自佇列502傳送至緩衝區522。亦即,若該控制電路實際上並不接收預期之寫入命令,則該控制電路可將該小的寫入命令傳送至緩衝區522。
作為另一實例,該控制電路可基於佇列502中所保存之剩餘寫入命令之數目來判定是否緩衝一小的寫入命令。舉例而言,若佇列502僅具有單個寫入命令或小數目之寫入命令,則該控制電路可將該小的寫入命令傳送至緩衝區522。
作為另一實例,該控制電路可至少部分基於記憶體中之可用空間的量來判定是否執行緩衝。舉例而言,若記憶體中之可用空間的量小於一預定臨限值,則該控制電路可選擇路徑504並繞過緩衝。另一方面,若可用空間的量大於該預定臨限值,則該控制電路可選擇路徑520並緩衝小的寫入命令。
作為另一實例,該控制電路可使用I/O排程演算法之過去的效能來判定是否緩衝。舉例而言,該控制電路可維持該排程演算法之過去的效能的記分卡,該記分卡可包括過去的緩衝決策之成功率。若該控制電路判定該成功率相對低,則該控制電路可調適用於判定是否緩衝的試探。
作為另一實例,該控制電路可基於緩衝區之大小(或特定言之,相對於寫入命令之大小的緩衝區之大小)來判定是否緩衝。舉例而言,若該寫入命令之大小相同於或大於緩衝區522之大小,則該控制電路可判定並不將該寫入命令傳送至緩衝區522,而改為選擇經由路徑504直接將該寫入命令分派至NVM 510。
然而,若該緩衝區之大小大於該寫入命令之大小,則該控制電路可應用一或多種演算法以便針對特定寫入跨距減少跨越晶粒之片段化。特定言之,可假設,大體上按照與程式化使用者資料之細微性相同的細微性(例如,沿著類似界限)而自NVM讀取該使用者資料。舉例而言,一系統可將一文字文件保存至一NVM。隨後,該系統將亦可能載入整個文件。作為另一實例,當一系統將一資料庫程式化於一NVM中,使用小的隨機更新來程式化該資料庫。同樣,稍後,將可能使用隨機讀取來存取該資料庫。因此,該系統可預期,將同時讀取與一序列之小的寫入命令相關聯之使用者資料。
照慣例,一系統可獨立地將每一寫入命令程式化至NVM。結果,與該等寫入命令相關聯之使用者資料可在多個晶粒之間分割,此舉可增加稍後讀取該使用者資料所花費之能量(例如,總體電力消耗)。此係因為每一晶粒需要啟動以便讀取該使用者資料。
因此,為了最大化並行處理(例如,最小化通道加倍)且最小化讀取能量,該控制電路可試圖沿著一緩衝區之頁面對準界限重新排序一佇列中之寫入命令。特定言之,該控制電路可試圖自一佇列選擇一或多個命令以沿著一或多個頁面對準界限填充一緩衝區。
因此,在此一情形下,該系統在將寫入命令儲存至一緩衝區時考慮頁面對準。舉例而言,如圖6中所展示,緩衝區600包括8個頁面對準部分(例如,頁面對準部分0至7),其中每一頁面對準部分包括保持四個LBA之空間。緩衝區600之每一頁面對準部分可經組態以儲存相同量之資料作為一NVM(例如,圖3之NVM 300或圖5之NVM 510)之一頁面。熟習此項技術者應瞭解,緩衝區600可包括任何合適數目之頁面對準部分。
舉例而言,如圖所示,已用寫入命令完全填充緩衝區600之頁面對準部分0及1,且僅部分填充緩衝區600之頁面對準部分2。特定言之,寫入命令0至3儲存於頁面對準部分0中,寫入命令4至7儲存於頁面對準部分1中,且寫入命令8及9儲存於頁面對準部分2中。緩衝區600之剩餘部分為空白。
基於此資訊,該控制電路可判定緩衝區600中所儲存之寫入命令當前未與至少一個頁面界限對準(例如,尚未完全填充頁面對準部分2)。回應於判定該等寫入命令未在緩衝區600中對準,該控制電路可偵測將緩衝區600填充達至少一個頁面界限所需的填充大小。舉例而言,對於頁面對準部分2而言,該控制電路可判定該填充大小為兩個LBA之大小(例如,區段602及604)。
該控制電路可接著判定在一佇列(例如,圖5之佇列502)中是否存在大小等於填充大小的至少一個寫入命令。舉例而言,對於緩衝區600之頁面對準部分2而言,該控制電路可選擇具有LBA大小二之一個寫入命令或各自具有LBA大小一之兩個寫入命令。熟習此項技術者應瞭解,任何合適演算法(例如,最佳擬合演算法)可用於判定在一佇列中是否存在大小等於填充大小的至少一個寫入命令。熟習此項技術者亦應瞭解,若一佇列中存在滿足填充大小之多個寫入命令,則該控制電路可使用上文論述之試探中之一或多個以選擇寫入命令來填充該緩衝區。
因此,若該控制電路判定存在大小大於該填充大小之至少一個寫入命令,則該控制電路可將該至少一個寫入命令自該佇列傳送至緩衝區600。舉例而言,在圖6中所展示之實例中,該控制電路可完全填充緩衝區600之頁面對準部分2(例如,用一或多個寫入命令填充區段602及604)。
一旦已填充緩衝區600達至少一個頁面對準部分(例如,緩衝區600中所儲存之寫入命令與頁面對準部分2對準),該控制電路便可將該等命令組合為一寫入多命令。在產生該寫入多命令後,該控制電路可引導一匯流排控制器將該寫入多命令自緩衝區600分派至一NVM。
在一些實施例中,若緩衝區600中所儲存之寫入命令為經加密之命令,則該控制電路可在將該命令自一佇列傳送至緩衝區600之前首先引導一加密模組加密該至少一個命令。在已加密該命令後,該控制電路可將該至少一個經加密之命令儲存於緩衝區600中。
如上文所論述,在完全填充緩衝區600之頁面對準部分之前,該控制電路可接收一或多個旁頻帶信號(例如,經同步之快取或FUA信號)。在此一情形下,該控制電路可用無效資料填充緩衝區600達該頁面對準部分(例如,頁面對準部分2)之結束(例如,用無效資料填充區段602及604)。該控制電路可接著將緩衝區600中所儲存之寫入命令與該無效資料組合為一寫入多命令,且引導該匯流排控制器將該寫入多命令自緩衝區600分派至該NVM。
因此,藉由最佳地重新排序一佇列中之寫入命令且將此等寫入命令中之一或多個擬合至一緩衝區中之頁面對準部分,該系統可最小化讀取路徑上之讀取能量、最小化緩衝額外負擔並減少一NVM中之片段化。
返回參看圖5,代替選擇路徑504或路徑520,一控制電路可經由路徑530將經緩衝之寫入命令及佇列寫入命令組合為同一批次或異動(例如,作為寫入多命令)。舉例而言,該控制電路可自佇列502選擇至少一第一寫入命令且自緩衝區522選擇至少一第二寫入命令,其中該第一寫入命令及該第二寫入命令可經選擇以最小化NVM 510中之頁面跨越。在選擇該第一寫入命令及該第二寫入命令後,該控制電路可組合該等命令以形成一寫入多命令。最終,該控制電路可引導一匯流排控制器經由路徑530將該寫入多命令分派至NVM。
在一些狀況下,在組合來自一緩衝區之寫入命令與來自一佇列之寫入命令時,該控制電路可需要將多種類型之加密特性組合於單個異動中。舉例而言,該控制電路可將至少一第一加密種子應用於自佇列502選擇之該一或多個寫入命令。此外,若緩衝區522中所儲存之寫入命令為未經加密之命令,則該控制電路可自記憶體(例如,圖1之記憶體114)擷取一或多個加密種子。在擷取該一或多個加密種子後,該控制電路可將該一或多個加密種子應用於自緩衝區522選擇之該一或多個寫入命令。該控制電路可接著將第一經加密之寫入命令及第二經加密之寫入命令組合為一寫入多命令,且將該寫入多命令分派至NVM 510。
現參看圖7A至圖7B及圖8,展示根據本發明之各種實施例之說明性處理程序之流程圖。此等處理程序可由系統(例如,圖1之電子器件100或圖2之電子器件200)中之一或多個組件執行。舉例而言,圖7A至圖7B及圖8之處理程序中之步驟中的至少一些可由控制電路(例如,圖1之SoC控制電路112)執行。熟習此項技術者應瞭解,該等步驟中之一或多個可由一NVM介面(例如,圖1之NVM介面118或圖2之NVM介面218)執行。虛線框意欲說明基於該系統之組態而可能執行或可能不執行之步驟。
首先參看圖7A及圖7B,展示用於一NVM(例如,圖1之NVM 120、圖2之NVM 220、圖3之NVM 300或圖5之NVM 510)中之有效緩衝之處理程序700。處理程序700可在步驟702中開始,且在步驟704中,該控制電路可自一檔案系統(例如,圖2之檔案系統210)接收用於程式化至一NVM之一第一寫入命令。
在步驟706中,該控制電路可將該第一寫入命令保存於一佇列(例如,圖5之佇列502)中。繼續至步驟708,該控制電路可將一或多個試探應用於該第一寫入命令以便判定是否將該第一寫入命令傳送至一緩衝區(例如,圖5之緩衝區522或圖6之緩衝區600)。亦即,該控制電路可判定是否執行該第一寫入命令之緩衝。
若在步驟710中,該控制電路判定並不傳送該第一寫入命令,則處理程序700可移動至步驟712。在步驟712中,該控制電路可引導一加密模組(例如,圖1之加密模組116)加密該第一寫入命令。接著,在步驟714中,該控制電路可引導一匯流排控制器(例如,圖2之NVM匯流排控制器216)將該經加密之寫入命令分派至該NVM(例如,經由圖5之路徑504)。舉例而言,該控制電路可經組態以引導該匯流排控制器將該經加密之寫入命令分派至一硬體引擎(例如,圖5之硬體引擎506)。處理程序700可接著在步驟716中結束。
若在步驟710中,該控制電路改為判定傳送該第一寫入命令,則處理程序700可移動至步驟718或者移動至步驟720。特定言之,若該系統經組態以使得命令在儲存於一緩衝區中之前得以加密,則在步驟718中,該控制電路可引導一加密模組加密該第一寫入命令。另一方面,若該系統經組態以使得未經加密之命令儲存於該緩衝區中,則處理程序700可直接移動至步驟720。在此一組態中,該控制電路亦可將一或多個加密種子複製至記憶體(例如,圖1之記憶體114)。因此,在步驟720中,該控制電路可將該經加密之命令或該未經加密之命令儲存於該緩衝區中(例如,經由圖5之路徑520)。
繼續至步驟722,該控制電路可判定該緩衝區中所儲存之寫入命令當前是否與至少一個頁面界限對準。若在步驟722中,該控制電路判定該緩衝區中所儲存之寫入命令當前與至少一個頁面界限對準,則處理程序700可移動至步驟724或步驟726。亦即,若未經加密之命令儲存於該緩衝區中,則在步驟724中,該控制電路可引導一加密模組使用一或多個所儲存之加密種子加密該等寫入命令。然而,若經加密之命令儲存於該緩衝區中,則處理程序700可直接移動至步驟726。
在步驟726中,該控制電路可將該緩衝區中之寫入命令組合為一寫入多命令。接著,在步驟728中,該控制電路可引導一匯流排控制器將該寫入多命令自該緩衝區分派至該NVM(例如,經由圖5之路徑524)。處理程序700可接著在步驟716中結束。
若在步驟722中,該控制電路改為判定該緩衝區中所儲存之寫入命令當前並不與至少一個頁面界限對準,則處理程序700可移動至步驟730。在步驟730中,該控制電路可偵測將該緩衝區填充達至少一個頁面界限所需的填充大小。
繼續至步驟732,該控制電路可判定在該佇列中是否存在大小等於該填充大小之至少一個寫入命令。若在步驟732中,該控制電路判定存在大小等於該填充大小之至少一個寫入命令,則處理程序700可移動至步驟734。
在步驟734中,該控制電路可將該至少一個寫入命令自該佇列傳送至該緩衝區。處理程序700可接著返回至步驟724或步驟726(例如,取決於該緩衝區中之寫入命令是否經加密)。
若在步驟732中,該控制電路改為判定該佇列中不存在大小等於該填充大小之至少一個寫入命令,則處理程序700可移動至步驟736。在步驟736中,該控制電路可等待額外寫入命令到達(例如,等待自一檔案系統接收額外寫入命令)。處理程序700可接著在步驟716中結束。
現參看圖8,展示用於判定是否在一NVM(例如,圖1之NVM 120、圖2之NVM 220、圖3之NVM 300或圖5之NVM 510)中緩衝之處理程序800。在一些實施例中,處理程序800可表示處理程序700(圖7)之應用至少一個試探(步驟708)及判定是否傳送(步驟710)的更詳細視圖。
處理程序800可在步驟802中開始,且在步驟804中,該控制電路可判定一佇列(例如,圖5之佇列502)中所保存之一寫入命令之大小。
接著,在步驟806中,該控制電路可判定該寫入命令之大小是否小於一預定臨限值。若在步驟806中,該控制電路判定該寫入命令之大小不小於該預定臨限值(例如,該寫入命令為大的寫入命令),則處理程序800可移動至步驟808。
在步驟808中,該控制電路可引導一匯流排控制器將該寫入命令自該佇列分派至一NVM(例如,經由圖5之路徑504)。處理程序800可接著在步驟810中結束。
若在步驟806中,該控制電路改為判定該寫入命令之大小小於一預定臨限值(例如,該寫入命令為小的寫入命令),則處理程序800可移動至步驟812。
在步驟812中,該控制電路可判定該佇列中所保存之寫入命令之數目是否超過一預定數目。若在步驟812中,該控制電路判定該佇列中所保存之寫入命令之數目超過該預定數目,則處理程序800可移動至步驟814。
在步驟814中,該控制電路可將該等寫入命令組合為一寫入多命令。處理程序800可接著移動至步驟808,其中該寫入多命令可自該佇列分派至該NVM。
若在步驟812中,該控制電路改為判定該佇列中所保存之寫入命令之數目不超過該預定數目,則處理程序800可移動至步驟816。
在步驟816中,該控制電路可判定該佇列中之一組最近接收之寫入命令是否為循序的。若在步驟816中,該控制電路判定該組最近接收之寫入命令為循序的,則處理程序800可移動至步驟818。
在步驟818中,該控制電路可等待在該佇列中接收額外寫入命令。接著,在步驟820中,該控制電路可判定是否已自一檔案系統(例如,圖2之檔案系統210)接收至少一個額外寫入命令。舉例而言,該控制電路可在一短時間段(例如,幾毫秒)之後作出此判定。
若在步驟820中,該控制電路判定其已自該檔案系統接收到至少一個額外寫入命令,則處理程序800可移動至步驟814,其中可將該等寫入命令組合為一寫入多命令。
若在步驟820中,該控制電路改為判定其尚未自該檔案系統接收到至少一個額外寫入命令,則處理程序800可移動至步驟822。在步驟822中,該控制電路可將該寫入命令傳送至一緩衝區(例如,經由圖5之路徑520)。處理程序800可接著在步驟810中結束。
若在步驟816中,該控制電路改為判定該佇列中之一組最近接收之寫入命令並非循序的,則處理程序800可移動至步驟824。在步驟824中,該控制電路可判定緊接在該寫入命令之前的所分派之寫入命令之數目是否超過一預定數目。
若在步驟824中,該控制電路判定所分派之寫入命令之數目超過一預定數目,則處理程序800可移動至步驟818,其中該控制電路可等待在該佇列中接收額外命令。若在步驟824中,該控制電路改為判定所分派之寫入命令之數目不超過一預定數目,則處理程序800可移動至步驟822,其中該控制電路可將該寫入命令傳送至該緩衝區。
應理解,圖7A至圖7B及圖8之處理程序700及800僅為說明性的。可在不偏離本發明之範疇之情況下移除、修改或組合該等步驟中之任一者且可在不偏離本發明之範疇之情況下添加任何額外步驟。
出於說明而非限制之目的呈現了本發明之所描述之實施例。
100‧‧‧電子器件
110‧‧‧系統單晶片(SoC)
112‧‧‧SoC控制電路
114‧‧‧記憶體
116‧‧‧加密模組
118‧‧‧NVM介面
120‧‧‧非揮發性記憶體(NVM)
200‧‧‧電子器件
210‧‧‧檔案系統
212‧‧‧NVM驅動程式
214‧‧‧轉譯層
216‧‧‧NVM匯流排控制器
218‧‧‧NVM介面
220‧‧‧NVM
300‧‧‧NVM
302‧‧‧等量區
304‧‧‧等量區
502‧‧‧佇列
504‧‧‧路徑
506‧‧‧硬體引擎
508‧‧‧NVM介面
510‧‧‧NVM
512‧‧‧匯流排
520‧‧‧路徑
522‧‧‧緩衝區
524‧‧‧路徑
530‧‧‧路徑
600‧‧‧緩衝區
602‧‧‧區段
604‧‧‧區段
圖1及圖2為根據本發明之各種實施例而組態之電子器件之方塊圖;圖3為根據本發明之各種實施例之非揮發性記憶體之功能視圖;圖4為各種系統之說明性時序圖的圖形視圖;圖5為根據本發明之各種實施例而組態之系統的說明性程式化流程的圖形視圖;圖6為根據本發明之各種實施例而組態之說明性緩衝區的圖形視圖;圖7A及圖7B為根據本發明之各種實施例的用於非揮發性記憶體中之有效緩衝的說明性處理程序之流程圖;及圖8為根據本發明之各種實施例的用於判定是否在非揮發性記憶體中緩衝的說明性處理程序之流程圖。
100‧‧‧電子器件
110‧‧‧系統單晶片(SoC)
112‧‧‧SoC控制電路
114‧‧‧記憶體
116‧‧‧加密模組
118‧‧‧NVM介面
120‧‧‧非揮發性記憶體(NVM)
权利要求:
Claims (1)
[1] 一種用於將資料寫入分割至多個寫入路徑中之方法,該方法包含:自一檔案系統接收用於程式化至一非揮發性記憶體(「NVM」)之一第一寫入命令;將該第一寫入命令保存於一佇列中;判定該第一寫入命令之大小;至少部分地基於該第一寫入命令之該大小而判定是否執行緩衝;及回應於判定執行緩衝,將該第一寫入命令自該佇列傳送至一緩衝區。
类似技术:
公开号 | 公开日 | 专利标题
TWI503822B|2015-10-11|用於具非揮發性記憶體之系統之有效緩衝
US8595414B2|2013-11-26|Selectively combining commands for a system having non-volatile memory
US8341311B1|2012-12-25|System and method for reduced latency data transfers from flash memory to host by utilizing concurrent transfers into RAM buffer memory and FIFO host interface
US8874942B2|2014-10-28|Asynchronous management of access requests to control power consumption
TWI302707B|2008-11-01|Mass storage device having both xip function and storage function
TWI267862B|2006-12-01|Flash controller cache architecture
US10509575B2|2019-12-17|Storage device and operating method of storage device
TWI375151B|2012-10-21|A controller for one type of nand flash memory for emulating another type of nand flash memory and methods for the same
US8463826B2|2013-06-11|Incremental garbage collection for non-volatile memories
US9690953B2|2017-06-27|Generating efficient reads for a system having non-volatile memory
US20110022781A1|2011-01-27|Controller for optimizing throughput of read operations
TW201227506A|2012-07-01|Controller and method for performing background operations
US20130326113A1|2013-12-05|Usage of a flag bit to suppress data transfer in a mass storage system having non-volatile memory
TW200834593A|2008-08-16|Command scheduling method and apparatus of virtual file system embodied in nonvolatile data storage device
US20160274819A1|2016-09-22|Memory system including host anda plurality of storage devices and data migration method thereof
CN109408417A|2019-03-01|存储装置的地址映射方法和操作方法
US10880081B2|2020-12-29|Storage device and storage system configured to perform encryption based on encryption key in file unit and method of operating using the same
KR20130032157A|2013-04-01|데이터 저장 장치 및 그것의 데이터 쓰기 방법
US8495386B2|2013-07-23|Encryption of memory device with wear leveling
US8972650B2|2015-03-03|Methods and systems for performing efficient page reads in a non-volatile memory
TW200847162A|2008-12-01|Methods for storing memory operations in a queue
US10802733B2|2020-10-13|Methods and apparatus for configuring storage tiers within SSDs
Jeong et al.2012|A technique to improve garbage collection performance for NAND flash-based storage systems
US11182310B2|2021-11-23|Priority determination circuit and method of operating the priority determination circuit for preventing overlapping operation
US20210157721A1|2021-05-27|Memory controller, storage device including the memory controller, and operating method of the memory controller and the storage device
同族专利:
公开号 | 公开日
TW201250691A|2012-12-16|
WO2012118743A1|2012-09-07|
CN102750226B|2015-11-25|
KR20120098547A|2012-09-05|
US20120221767A1|2012-08-30|
KR101624007B1|2016-05-24|
US9996457B2|2018-06-12|
KR20120098505A|2012-09-05|
EP2492817A3|2012-11-14|
TWI537952B|2016-06-11|
TWI503822B|2015-10-11|
CN102750226A|2012-10-24|
US9703700B2|2017-07-11|
EP2492817A2|2012-08-29|
US20170286290A1|2017-10-05|
US20150227460A1|2015-08-13|
引用文献:
公开号 | 申请日 | 公开日 | 申请人 | 专利标题
TWI601060B|2017-01-17|2017-10-01|群聯電子股份有限公司|資料傳輸方法、記憶體儲存裝置及記憶體控制電路單元|
TWI635391B|2017-02-14|2018-09-11|點序科技股份有限公司|快閃記憶體以及其管理方法|US4433374A|1980-11-14|1984-02-21|Sperry Corporation|Cache/disk subsystem with cache bypass|
US5724592A|1995-03-31|1998-03-03|Intel Corporation|Method and apparatus for managing active power consumption in a microprocessor controlled storage device|
US5651137A|1995-04-12|1997-07-22|Intel Corporation|Scalable cache attributes for an input/output bus|
JP3821536B2|1997-05-16|2006-09-13|沖電気工業株式会社|不揮発性半導体ディスク装置|
US6233693B1|1998-05-06|2001-05-15|International Business Machines Corporation|Smart DASD spin-up|
US6748493B1|1998-11-30|2004-06-08|International Business Machines Corporation|Method and apparatus for managing memory operations in a data processing system using a store buffer|
US8112574B2|2004-02-26|2012-02-07|Super Talent Electronics, Inc.|Swappable sets of partial-mapping tables in a flash-memory system with a command queue for combining flash writes|
US20080320209A1|2000-01-06|2008-12-25|Super Talent Electronics, Inc.|High Performance and Endurance Non-volatile Memory Based Storage Systems|
US6748441B1|1999-12-02|2004-06-08|Microsoft Corporation|Data carousel receiving and caching|
US6397301B1|1999-12-29|2002-05-28|Intel Corporation|Preventing access to secure area of a cache|
US8266367B2|2003-12-02|2012-09-11|Super Talent Electronics, Inc.|Multi-level striping and truncation channel-equalization for flash-memory system|
JP4694040B2|2001-05-29|2011-06-01|ルネサスエレクトロニクス株式会社|半導体記憶装置|
GB0123416D0|2001-09-28|2001-11-21|Memquest Ltd|Non-volatile memory control|
US6925573B2|2002-01-02|2005-08-02|Intel Corporation|Method and apparatus to manage use of system power within a given specification|
US7400062B2|2002-10-15|2008-07-15|Microsemi Corp. - Analog Mixed Signal Group Ltd.|Rack level power management|
AT504446T|2002-12-02|2011-04-15|Silverbrook Res Pty Ltd|Totdüsenausgleich|
JP4252828B2|2003-03-19|2009-04-08|株式会社日立製作所|キャッシュ制御方法、ノード装置、プログラム|
US7146455B2|2003-05-19|2006-12-05|Accton Technology Corporation|System and method for optimized access to memory devices requiring block writing|
EP1688866A4|2003-11-28|2009-03-25|Panasonic Corp|RECORDING APPARATUS|
US7155623B2|2003-12-03|2006-12-26|International Business Machines Corporation|Method and system for power management including local bounding of device group power consumption|
US20070083491A1|2004-05-27|2007-04-12|Silverbrook Research Pty Ltd|Storage of key in non-volatile memory|
JP4447977B2|2004-06-30|2010-04-07|富士通マイクロエレクトロニクス株式会社|セキュアプロセッサ、およびセキュアプロセッサ用プログラム。|
US7305572B1|2004-09-27|2007-12-04|Emc Corporation|Disk drive input sequencing for staggered drive spin-up|
US7657756B2|2004-10-08|2010-02-02|International Business Machines Corporaiton|Secure memory caching structures for data, integrity and version values|
US7363442B2|2004-11-12|2008-04-22|International Business Machines Corporation|Separate handling of read and write of read-modify-write|
JP2006185407A|2004-12-01|2006-07-13|Matsushita Electric Ind Co Ltd|ピーク電力制御方法および装置|
JP2006195569A|2005-01-11|2006-07-27|Sony Corp|記憶装置|
US7440215B1|2005-03-30|2008-10-21|Emc Corporation|Managing disk drive spin up|
US7444526B2|2005-06-16|2008-10-28|International Business Machines Corporation|Performance conserving method for reducing power consumption in a server system|
US7562234B2|2005-08-25|2009-07-14|Apple Inc.|Methods and apparatuses for dynamic power control|
US20070211551A1|2005-11-25|2007-09-13|Yoav Yogev|Method for dynamic performance optimization conforming to a dynamic maximum current level|
US7609564B2|2005-12-31|2009-10-27|Intel Corporation|Systems and techniques for non-volatile memory buffering|
US7793059B2|2006-01-18|2010-09-07|Apple Inc.|Interleaving policies for flash memory|
US7587559B2|2006-08-10|2009-09-08|International Business Machines Corporation|Systems and methods for memory module power management|
US20080107275A1|2006-11-08|2008-05-08|Mehdi Asnaashari|Method and system for encryption of information stored in an external nonvolatile memory|
US7953954B2|2007-01-26|2011-05-31|Micron Technology, Inc.|Flash storage partial page caching|
JP4347351B2|2007-02-15|2009-10-21|富士通株式会社|データ暗号化装置、データ復号化装置、データ暗号化方法、データ復号化方法およびデータ中継装置|
JP4347350B2|2007-02-15|2009-10-21|富士通株式会社|データ暗号転送装置、データ復号転送装置、データ暗号転送方法およびデータ復号転送方法|
JP4356765B2|2007-04-20|2009-11-04|ソニー株式会社|情報処理装置および方法、並びにプログラム|
JP2009032038A|2007-07-27|2009-02-12|Hitachi Ltd|リムーバブルな暗号化/復号化モジュールが接続されるストレージシステム|
US7895397B2|2007-09-12|2011-02-22|Intel Corporation|Using inter-arrival times of data requests to cache data in a computing environment|
US20120191982A1|2007-12-06|2012-07-26|Levin Timothy Evert|Non-volatile storage of encrypted data|
US20090313416A1|2008-06-16|2009-12-17|George Wayne Nation|Computer main memory incorporating volatile and non-volatile memory|
US7961544B2|2008-08-05|2011-06-14|Sandisk Il Ltd.|Storage system and method for managing a plurality of storage devices|
JP5489434B2|2008-08-25|2014-05-14|株式会社日立製作所|フラッシュメモリ搭載ストレージ装置|
US8601213B2|2008-11-03|2013-12-03|Teradata Us, Inc.|System, method, and computer-readable medium for spool cache management|
US8386808B2|2008-12-22|2013-02-26|Intel Corporation|Adaptive power budget allocation between multiple components in a computing system|
US8244960B2|2009-01-05|2012-08-14|Sandisk Technologies Inc.|Non-volatile memory and method with write cache partition management methods|
CN101498994B|2009-02-16|2011-04-20|华中科技大学|一种固态硬盘控制器|
US8566510B2|2009-05-12|2013-10-22|Densbits Technologies Ltd.|Systems and method for flash memory management|
US8281227B2|2009-05-18|2012-10-02|Fusion-10, Inc.|Apparatus, system, and method to increase data integrity in a redundant storage system|
US8307258B2|2009-05-18|2012-11-06|Fusion-10, Inc|Apparatus, system, and method for reconfiguring an array to operate with less storage elements|
US20110173462A1|2010-01-11|2011-07-14|Apple Inc.|Controlling and staggering operations to limit current spikes|
US20110252187A1|2010-04-07|2011-10-13|Avigdor Segal|System and method for operating a non-volatile memory including a portion operating as a single-level cell memory and a portion operating as a multi-level cell memory|
US9235530B2|2010-05-31|2016-01-12|Sandisk Technologies Inc.|Method and system for binary cache cleanup|
TWI455136B|2010-07-01|2014-10-01|Silicon Motion Inc|用來進行資料整形之方法以及相關之記憶裝置及其控制器|
US8522055B2|2010-07-26|2013-08-27|Apple Inc.|Peak power validation methods and systems for non-volatile memory|
US8826051B2|2010-07-26|2014-09-02|Apple Inc.|Dynamic allocation of power budget to a system having non-volatile memory and a processor|
US8555095B2|2010-07-26|2013-10-08|Apple Inc.|Methods and systems for dynamically controlling operations in a non-volatile memory to limit power consumption|
US20120159042A1|2010-12-21|2012-06-21|Western Digital Technologies, Inc.|Data storage device executing a unitary command comprising two cipher keys to access a sector spanning two encryption zones|
US20120221767A1|2011-02-28|2012-08-30|Apple Inc.|Efficient buffering for a system having non-volatile memory|US20120221767A1|2011-02-28|2012-08-30|Apple Inc.|Efficient buffering for a system having non-volatile memory|
US9021178B2|2011-05-02|2015-04-28|Western Digital Technologies, Inc.|High performance path for command processing|
US8645723B2|2011-05-11|2014-02-04|Apple Inc.|Asynchronous management of access requests to control power consumption|
US8745369B2|2011-06-24|2014-06-03|SanDisk Technologies, Inc.|Method and memory system for managing power based on semaphores and timers|
US9134909B2|2011-08-30|2015-09-15|International Business Machines Corporation|Multiple I/O request processing in a storage system|
US9235502B2|2011-09-16|2016-01-12|Apple Inc.|Systems and methods for configuring non-volatile memory|
KR101889298B1|2011-11-08|2018-08-20|삼성전자주식회사|불휘발성 메모리를 포함하는 메모리 장치 및 불휘발성 메모리의 제어 방법|
US8938583B1|2011-11-16|2015-01-20|Western Digital Technologies, Inc.|System and method for concurrently executing data access requests|
EP3249545B1|2011-12-14|2022-02-09|Level 3 Communications, LLC|Content delivery network|
US9769123B2|2012-09-06|2017-09-19|Intel Corporation|Mitigating unauthorized access to data traffic|
US9634918B2|2012-12-13|2017-04-25|Level 3 Communications, Llc|Invalidation sequencing in a content delivery framework|
US10652087B2|2012-12-13|2020-05-12|Level 3 Communications, Llc|Content delivery framework having fill services|
US10701149B2|2012-12-13|2020-06-30|Level 3 Communications, Llc|Content delivery framework having origin services|
US10791050B2|2012-12-13|2020-09-29|Level 3 Communications, Llc|Geographic location determination in a content delivery framework|
US9654354B2|2012-12-13|2017-05-16|Level 3 Communications, Llc|Framework supporting content delivery with delivery services network|
US10701148B2|2012-12-13|2020-06-30|Level 3 Communications, Llc|Content delivery framework having storage services|
US10514855B2|2012-12-19|2019-12-24|Hewlett Packard Enterprise Development Lp|NVRAM path selection|
CN103914397B|2013-01-09|2018-01-30|深圳市江波龙电子有限公司|闪存存储设备及其管理方法|
US9473561B2|2013-03-15|2016-10-18|International Business Machines Corporation|Data transmission for transaction processing in a networked environment|
US10089224B2|2013-03-15|2018-10-02|The Boeing Company|Write caching using volatile shadow memory|
KR102101304B1|2013-03-15|2020-04-16|삼성전자주식회사|메모리 컨트롤러 및 메모리 컨트롤러의 동작 방법|
US9047189B1|2013-05-28|2015-06-02|Amazon Technologies, Inc.|Self-describing data blocks of a minimum atomic write size for a data store|
US9880926B1|2013-08-20|2018-01-30|Seagate Technology Llc|Log structured reserved zone for a data storage device|
US9412455B2|2013-09-11|2016-08-09|Kabushiki Kaisha Toshiba|Data write control device and data storage device|
CN103617101A|2013-12-12|2014-03-05|北京旋极信息技术股份有限公司|一种掉电保护方法及装置|
US9798493B2|2013-12-16|2017-10-24|International Business Machines Corporation|Firmware bypass for medium-access commands|
KR102301230B1|2014-12-24|2021-09-10|삼성전자주식회사|가상화된 gpu들에 대한 스케줄링을 수행하는 방법 및 이를 위한 디바이스|
US9754675B2|2015-03-06|2017-09-05|SK Hynix Inc.|Memory system and operation method thereof|
KR20160122329A|2015-04-13|2016-10-24|에스케이하이닉스 주식회사|출력 커맨드들을 전송하는 컨트롤러 및 그것의 동작 방법|
WO2017069773A1|2015-10-23|2017-04-27|Hewlett-Packard Development Company, L.P.|Write commands filtering|
US9948620B2|2015-12-15|2018-04-17|International Business Machines Corporation|Management of encryption within processing elements|
US10007319B2|2015-12-17|2018-06-26|Microsemi Solutions , Inc.|Power saving in multi-directional data transfer|
CN105677585B|2015-12-31|2019-01-15|联想有限公司|一种数据处理方法、电子设备|
JP6444917B2|2016-03-08|2018-12-26|東芝メモリ株式会社|ストレージシステム、情報処理システムおよび制御方法|
US9591047B1|2016-04-11|2017-03-07|Level 3 Communications, Llc|Invalidation in a content delivery network |
KR20170125471A|2016-05-04|2017-11-15|에스케이하이닉스 주식회사|데이터 처리 시스템 및 데이터 처리 시스템의 동작 방법|
KR20180008951A|2016-07-14|2018-01-25|에스케이하이닉스 주식회사|메모리 시스템 및 메모리 시스템의 동작 방법|
CN106713450A|2016-12-21|2017-05-24|广州优视网络科技有限公司|基于读写分离模式的下载提速方法及装置|
CN108572790B|2017-04-20|2021-11-26|深圳市得一微电子有限责任公司|一种固态硬盘写入指令排序方法、固态硬盘|
US10014056B1|2017-05-18|2018-07-03|Sandisk Technologies Llc|Changing storage parameters|
CN107506138B|2017-08-11|2020-12-18|东莞记忆存储科技有限公司|一种固态硬盘提升寿命的方法|
KR102293069B1|2017-09-08|2021-08-27|삼성전자주식회사|불휘발성 메모리 장치 및 제어기를 포함하는 스토리지 장치, 제어기, 그리고 스토리지 장치의 동작 방법|
US10514748B2|2017-09-27|2019-12-24|Western Digital Technologies, Inc.|Reactive power management for non-volatile memory controllers|
US10861504B2|2017-10-05|2020-12-08|Advanced Micro Devices, Inc.|Dynamic control of multi-region fabric|
US10558591B2|2017-10-09|2020-02-11|Advanced Micro Devices, Inc.|Method and apparatus for in-band priority adjustment forwarding in a communication fabric|
US10430117B2|2017-10-23|2019-10-01|Micron Technology, Inc.|Host accelerated operations in managed NAND devices|
US10725703B2|2017-11-29|2020-07-28|Lapis Semiconductor Co., Ltd.|Method for writing data, memory device and data writing system|
US11196657B2|2017-12-21|2021-12-07|Advanced Micro Devices, Inc.|Self identifying interconnect topology|
US11074007B2|2018-08-08|2021-07-27|Micron Technology, Inc.|Optimize information requests to a memory system|
US10969994B2|2018-08-08|2021-04-06|Micron Technology, Inc.|Throttle response signals from a memory system|
US10719462B2|2018-09-25|2020-07-21|Intel Corporation|Technologies for computational storage via offload kernel extensions|
CN109445690B|2018-10-08|2020-10-23|苏州浪潮智能科技有限公司|一种raid卡性能优化方法、装置、终端及存储介质|
US20200174697A1|2018-11-29|2020-06-04|Advanced Micro Devices, Inc.|Aggregating commands in a stream based on cache line addresses|
CN111625180B|2019-02-27|2021-05-28|英韧科技有限公司|数据写入方法及装置、存储介质|
CN109992212B|2019-04-10|2020-03-27|苏州浪潮智能科技有限公司|一种数据写入方法和一种数据读取方法|
US11223575B2|2019-12-23|2022-01-11|Advanced Micro Devices, Inc.|Re-purposing byte enables as clock enables for power savings|
US20210334041A1|2020-04-24|2021-10-28|Western Digital Technologies, Inc.|Storage Devices Having Minimum Write Sizes Of Data|
法律状态:
优先权:
申请号 | 申请日 | 专利标题
US13/036,460|US20120221767A1|2011-02-28|2011-02-28|Efficient buffering for a system having non-volatile memory|
[返回顶部]